package main

func main() {
	/*
		1.Go语言内置错误接口类型error
			type error interface {
				Error() string
			}

		2.定义一个error变量：err := errors.New("str")

		3.错误处理的最佳实践：
		（1）在多返回值函数中，error 通常作为函数最后一个返回值
		（2）如果一个函数返回 error 类型变量，则先用 if 语句处理 error != nil 的异常场景
		（3）defer 语句应该放到 error 判断语句的后面，不然有可能产生 panic
		（4）在错误逐级向上传递的过程中，错误信息应该不断地丰富和完善

		4.广义上的错误：发生非期望的行为
		  狭义上的错误：发生非期望的已知行为（错误的类型是预料并定义好的）
			异常（未捕获的错误）：发生非期望的未知错误（错误的类型不在预先定义的范围内）

		5.Go语言要处理的错误：
		（1）运行时错误，此类错误语言的运行时能够捕获，隐式/显示地抛出 panic
		（2）程序逻辑错误，程序结果不符合预期，但不会引发运行错误

		6.错误的处理方法：
		（1）返回一个错误类型值
		（2）调用 panic 抛出错误

		7.error 和 panic 的使用规则：
		（1）程序发生的错误导致程序不能容错继续执行：
			1.主动调用 panic
			2.由运行时抛出 panic
		（2）程序虽然发生错误，但是程序能够容错继续执行：
			1.使用错误返回值的方式
			2.在可能发生运行错误的非关键分支上使用 recover 捕获 panic
	*/
}
